home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Misc / FLM / otherfiles / deutsch / ARexx / finalw_auto2.rexx < prev    next >
OS/2 REXX Batch file  |  2000-01-01  |  4KB  |  150 lines

  1. /*
  2.   Übersetzung
  3.   FinalWriter ARexx Macro zum automatischen Übersetzen mit FLM
  4.   $VER: 0.9ß (22.10.1995) by olbiSOFT
  5.  
  6.   Dieser Script übersetzt ab der aktuellen Cursor-Position bis zum Text-Ende.
  7.   Der Text wird dabei mit der übersetzung überschrieben.
  8.  
  9.   Changed by Denis Unger (16.07.1996)
  10. */
  11.  
  12.  
  13. /* Nun kommen persönliche Einstellungen ...*/
  14. /************************************************************************/
  15. FLM            = 'FLM:FLM'             /* Programm FLM */
  16. FWfont         = 'SoftSans_BoldItalic' /* Font für nichtgefunden Wörter */
  17. /************************************************************************/
  18.  
  19. Zeilenumbruch  = '0A'X
  20.  
  21. Options Results
  22.  
  23. gestartet = 0
  24. if ~show('PORTS','FLM') then do          /* FLM schon gestartet ? */
  25.     address command 'run >NIL: ' || FLM  /* starte FLM */
  26.     address command "SYS:Rexxc/WaitForPort FLM"
  27.     gestartet = 1        /* FLM wird nach Übersetzung beendet */
  28. end
  29.  
  30. /* Im Moment feste Sprache Englisch und Deutsch*/
  31.   ShowMessage 1 0 '"Übersetzungsrichtung ?" "" "" "  Deutsch->Englisch   " "Englisch->Deutsch" ""'        /* in welche Richtung soll übersetzt werden */
  32.     Richtung = RESULT
  33.   if Richtung = '2' then do
  34.     address FLM SETLANGUAGE englisch
  35.   end
  36.   else do
  37.     address FLM SETLANGUAGE deutsch
  38.   end
  39.  
  40.   ShowMessage 1 0 '"Soll der Text nun von Cursor-Position" "bis zum Dokument-Ende übersetzt werde ?" "" "Ja" "Nein" ""'
  41.   if RESULT = 2 then exit
  42.  
  43. do forever
  44.  
  45.     markiere()        /* markiere zwei Worte */
  46.     WortOrg = getASCII()        /* hole Worte */
  47.     if WortOrg = "" then do
  48.         ShowMessage 1 0 '"Textübersetzung beendet." "" "" "OK" "" ""'
  49.         leave           /* Übersetzung beenden */
  50.     end
  51.  
  52.     if pos(Zeilenumbruch,WortOrg) ~= 0 then do
  53.       /* wenn im Text noch ein Zeilenumbruch dann ein Wort weniger anwählen */
  54.         demarkiere()
  55.         WortOrg = getASCII()        /* hole den Rest */
  56.     end
  57.  
  58.     Uebersetzung = uebersetze(WortOrg)   /* versuche eine Übersetzung */
  59.     if Uebersetzung ~= '' then do        /* wenn das Übersetzen erfogreich war */
  60.        Type Uebersetzung                 /* schreibe Übersetzung */
  61.     end
  62.     else do        /* falls keine Übersetzung möglich */
  63.        if pos(' ',WortOrg) ~= 0 then do
  64.           /* wenn noch zwei Worte angewählt sind */
  65.             demarkiere()            /* dann ein Wort weniger anwählen */
  66.             WortOrg = getASCII()    /* und den Rest holen */
  67.             Uebersetzung = uebersetze(WortOrg)        /* versuche eine Übersetzung */
  68.        end
  69.        if Uebersetzung ~= '' then do 
  70.             Type Uebersetzung   /* schreibe Übersetzung wenn gelungen */
  71.        end
  72.        else do 
  73.            Font FWfont /* Font ändern*/
  74.        end
  75.     end
  76.     CtrlDown
  77.     if length(WortOrg) > 0 then Cursor 'Left'
  78.     Cursor 'Right'      /* springe bis zum nächsten Wort */
  79.     CtrlUp
  80. end
  81.  
  82. if gestartet = 1 then do
  83.  /* wurde FLM durch das Script gestartet, so wird es nun auch wieder beendet */
  84.  address FLM QUIT
  85. end
  86.  
  87. exit
  88.  
  89. /* --------------------- Funktionen --------------------- */
  90.  
  91.  
  92.  
  93.  
  94. /* markiere bis zum übernächsten Wort */
  95. markiere:
  96.    
  97.    CtrlDown        
  98.    ShiftDown
  99.    Cursor 'Right'
  100.    Cursor 'Right'
  101.    CtrlUP
  102.    ShiftUp
  103.  
  104.    return ''
  105.  
  106.  
  107.  
  108. /* deselektiere das letzte Wort */
  109. demarkiere:
  110.  
  111.    CtrlDown
  112.    ShiftDown
  113.    Cursor 'Left'
  114.    CtrlUp
  115.    ShiftUp
  116.  
  117.    return ''
  118.  
  119.  
  120. /* entfernt alle nicht ASCII Zeichen am ende der Zeichenkette 
  121.    deselektiert diese und liefert den Rest zurück */
  122. getASCII: PROCEDURE
  123.  
  124.     ShiftDown
  125.     Extract
  126.     Zeichen = RESULT
  127.     do while length(Zeichen) > 0
  128.         ASCII_rechts = C2D(right(Zeichen,1))
  129.         if (((ASCII_rechts >= 65) & (ASCII_rechts <= 90)) | ((ASCII_rechts >= 97) & (ASCII_rechts <= 122))) then leave /* solange noch Zeichen da exrahiere von Hinten alles was kein Buchstabe ist */
  130.         Cursor 'Left'
  131.         Zeichen = left(Zeichen,length(Zeichen)-1)
  132.     end
  133.     ShiftUp
  134.     return Zeichen
  135.  
  136.  
  137.  
  138. /* versucht das übergebene Wort zu übersetzen und liefert das Ergebnis zurück */
  139. uebersetze: PROCEDURE
  140.     ARG WortOrg
  141.  
  142.     address FLM LOOKWORD WortOrg        /* übersetze das Wort */
  143.     address FLM FOUND        /* teste ob Übersetzung erfolgreich */
  144.     gefunden = RESULT
  145.     if gefunden = '0' then do        /* wenn erfolgreich dann */
  146.         address FLM TAKEWORD        /* hole Übersetzung */
  147.        return RESULT
  148.     end
  149.     else return ''        /* liefere nix wenn keine Übersetzung möglich */
  150.